import 'package:flutter/material.dart';


void main() => runApp(MyApp());

class MyApp extends StatelessWidget {

  @override
  Widget build(BuildContext context) {
    return MaterialApp(

      home: HomePage(),
    );
  }
}

class HomePage extends StatefulWidget {

  @override
  State<StatefulWidget> createState() {
    // TODO: implement createState
    return HomePageState();
  }
}

class HomePageState extends State<HomePage> {

//定义一个状态，保存当前指针位置
  PointerEvent _event;

  @override
  Widget build(BuildContext context) {

    return Scaffold(

      appBar: AppBar(title: Text('test'),),

      body: Container(

        child: Listener(
          child: Container(
            alignment: Alignment.center,
            color: Colors.blue,
            width: double.infinity,
            height: 300.0,

            /// ？ 如果为null 返回 null
            /// ?? 如果为 null 返回 左，否则返回 右
            child: Text(_event?.toString() ?? "",
                style: TextStyle(color: Colors.white)),

//               position：它是鼠标相对于当对于全局坐标的偏移。
//               delta：两次指针移动事件（PointerMoveEvent）的距离。
//               pressure：按压力度，如果手机屏幕支持压力传感器(如iPhone的3D Touch)，此属性会更有意义，如果手机不支持，则始终为1。
//               orientation：指针移动方向，是一个角度值
          ),
          onPointerDown: (PointerDownEvent event) =>
              setState(() => _event = event),
          onPointerMove: (PointerMoveEvent event) =>
              setState(() => _event = event),
          onPointerUp: (PointerUpEvent event) =>
              setState(() => _event = event),
        ),
      ),

    );
  }
}
